草庐IT

Java float 表示为十六进制数

全部标签

c++ - 如何使用 pin 工具跟踪二进制检测中的特定循环?

我刚开始使用intelpin工具,想跟踪二进制文件中的某个循环,但是我发现每次运行时指令的地址在每次运行中都发生了变化,我该如何找到特定的指令或特定的循环,即使它在每次运行中都发生变化?编辑0:我有以下地址,其中一个是RVA:(地址的第一部分(小地址)对于每次运行都是不变的,但是每次运行都会更改最后一部分(大地址)地址loop_repeationNo._of_Instruction_In_Loop419594218419597213...............14051305256648012............ 最佳答案 t

c++ - 有没有办法将表示为字符串的数字转换为其二进制等价物?

所需代码的外壳:#include#includestd::stringstr_to_bin(conststd::string&str){//...}intmain(){std::stringstr="123";std::cout问题标题说明了一切。我已经坚持了一段时间。在STL中有解决方案吗?还是我缺少的简单东西?如果没有,我将如何去做呢?也许你可以指出我的方向?另外,速度也很重要。编辑:数字可以是任意大小(也可以大于longlong),所以std::stoi和std::bitset不在讨论范围内。 最佳答案 您可以使用GMP(GN

c++ - C++ 中的有符号类型表示

在我正在阅读的书中说:Thestandarddoesnotdefinehowsignedtypesarerepresented,butdoesspecifythatrangeshouldbeevenlydividedbetweenpositiveandnegativevalues.Hence,an8-bitsignedcharisguaranteedtobeabletoholdvaluesfrom-127through127;mostmodernmachinesuserepresentationsthatallowvaluesfrom-128through127.我假设[-128;12

c++ - 用 C++ 签名的十进制到二进制

这是我的:stringdecimal_to_binary(intn){stringresult="";while(n>0){result=string(1,(char)(n%2+48))+result;n=n/2;}returnresult;}这行得通,但如果我输入负数就不行了,有什么帮助吗? 最佳答案 只是#include然后使用bitset和to_string将int转成stringstd::cout(n).to_string();它也适用于负数。 关于c++-用C++签名的十进制到

c++ - 在 C++ 中解析混合二进制数据

我有一大堆数据正在解析。它具有混合数据类型,一些double后跟一些float。这就是我将double解析为vector的方式。如果有更好的方法来做到这一点,我只是想得到一些反馈。我觉得可能有一种方法可以更简洁地做到这一点。BlobData::MyDoublesisavector;BlobData::MyDoublesMyClass::GetDataPointsFromBlob(consttext*blob,constintnumDoubles){BlobData::MyDoubles::value_type*doubles=newBlobData::MyDoubles::value_

c++ - 在 C++ 中将二进制数据写入 fstream

问题我有一些结构要写入二进制文件。它们由来自cstdint的整数组成,例如uint64_t.有没有办法将它们写入二进制文件,而不需要我手动将它们拆分为char的数组?并使用fstream.write()函数?我尝试过的我天真的想法是,c++会弄清楚我有一个二进制模式的文件和会将整数写入该二进制文件。所以我尝试了这个:#include#include#includeusingnamespacestd;intmain(){fstreamfile;uint64_tmyuint=0xFFFF;file.open("test.bin",ios::app|ios::binary);file但是,这

c++ - 编译器使用的 double 表示的显式规范

最近遇到visual-c++好像不是IEEE754的问题兼容,而是使用subnormalrepresentation.也就是说,其中的doublefloat没有通常表示的1个符号位、11个指数位和52个显式存储的有效小数位,见下文。由于gcc和clang是兼容的,因此非常需要一致的跨平台行为我想知道是否可以强制visual-c++使用正常表示。或者让gcc和clang使用次正规表示当然也可以解决问题。不同双重表示的问题可以在visual-c++中重现,gcc和clang使用以下代码:#include#includeintmain(){try{std::stod("8.097571188

c++ - 在彼此非常接近的范围内混合二进制数据和指令是否有缓存惩罚?

我在程序上生成128字节的block,其中包含一些为机器语言函数保留的n字节header,我只是通过内联汇编调用这些函数。它们没有在任何地方定义,而是在运行时生成到分配到内存中的页面中,可以访问执行。但是,我想保留这些block的末尾(128-n)字节用于存储在这些函数中使用的数据,因为能够将内存偏移调用缩小到8位而不是32位,并且(可能?)帮助缓存。但是,我担心的是缓存。假设我有一个处理器,它既有数据缓存又有指令缓存,这种典型的处理器处理这种格式的效果如何?它会尝试在我的指令之后将数据作为指令本身加载到指令缓存中吗?这是否会导致显着的性能损失,因为处理器试图弄清楚如何处理这些垃圾和可

c++ - 如何在不调用实现定义的行为的情况下将二进制数据写入文件?

我正在编写这样的程序,将一些字节写入文件。#includeintmain(){charbuffer[4]={0,0,255,255};std::ofstreamf("foo.txt",std::ios_base::binary);f.write(buffer,sizeofbuffer);f.close();return0;}这工作正常,并在我的系统上给出了预期的结果。$g++-std=c++11-pedantic-Wall-Wextrasignedness.cc$./a.out$catfoo.txt$od-tx1foo.txt00000000000ffff0000004等效的C代码是:

C++:以十六进制打印 double 的表示形式

是否有一种简单的方法来操作std::cout以便它以十六进制表示形式打印double值?换句话说,相当于:printf("%"PRIx64,*reinterpret_cast(&my_double));为了提供一些背景信息,我有一个程序可以打印数百个浮点结果,我想知道是否有神奇的一行代码可以以十六进制打印所有这些结果。 最佳答案 看看std::hexfloat如果你可以使用C++11示例:doublek=3.14;std::cout打印:0x1.91eb85p+1 关于C++:以十六进制